<template>
  <div class="main">
      <el-button @click="previewPdf(scope.row)" type="text" size="small">
    <div class="images" v-viewer="{ navbar: false}">
        <img v-for="src in images" style="width: 100%" :src="src" :key="src" hidden>
        预览
    </div>
</el-button>

<el-dialog
        :visible="showDoc == true || showPdf == true  || showVideo == true"
        :show-close="true"
        :width="'80%'"
        class="dialog-div-pre-style"
        :before-close="closePreviewClick"
        center>
    <div v-if="showDoc == true" class="dialog-body-content-base-style">
        <iframe frameborder="0"
                :src="'https://view.officeapps.live.com/op/view.aspx?src=' + this.fileUrl"
                width='100%'>
        </iframe>
    </div>
    <div v-else-if="showPdf == true" class="dialog-body-content-base-style" style="justify-content: center; align-items: center">
        <embed :src="pdfUrl" style="width: 100%; height: 100%"/>
    </div>
    <div v-else-if="showVideo == true"
         class="dialog-body-content-base-style"
         style="justify-content: center; align-items: center">
        <video-player class="video-player vjs-custom-skin"
                      ref="positiveVideoPlayer"
                      :playsinline="true"
                      :options="positivePlayerOptions"
        ></video-player>
    </div>
</el-dialog>
      
  </div>
</template>

<script>
import Vue from 'vue';
import Viewer from 'v-viewer'
import 'viewerjs/dist/viewer.css'
Vue.use(Viewer)
Viewer.setDefaults({
  Options: { 'inline': false, 'button': false, 'navbar': false, 'title': false, 'toolbar': false, 'tooltip': false, 'movable': true, 'zoomable': true, 'rotatable': true, 'scalable': false, 'transition': true, 'fullscreen': false, 'keyboard': false, 'url': 'data-source' }
})
export default {
  name: 'hzjmain',
  props: {
    msg: String
  },
  data() {
    return {
        showDoc: false,
        showPdf: false,
        showVideo: false,
        fileUrl: "",
        images: [],
        currentPage: 0, // pdf文件页码
        pageCount: 0, // pdf文件总页数
        pdfUrl: "",
        scale: 1.0,
        /**
         *播放器配置
        */
        positivePlayerOptions: {
            playbackRates: [0.5, 1.0, 1.5, 2.0], //播放速度
            autoplay: false, //如果true,浏览器准备好时开始回放。
            muted: false, // 默认情况下将会消除任何音频。
            loop: false, // 导致视频一结束就重新开始。
            preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频（如果浏览器支持）
            language: 'zh-CN',
            aspectRatio: '16:9', // 将播放器置于流畅模式，并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字（例如"16:9"或"4:3"）
            fluid: true, // 当true时，Video.js player将拥有流体大小。换句话说，它将按比例缩放以适应其容器。
            sources: [{
                type: "",
                src: "" //视频url地址
            }],
            poster: "", //你的封面地址
            // width: document.documentElement.clientWidth,
            notSupportedMessage: '此视频暂无法播放，请稍后再试', //允许覆盖Video.js无法播放媒体源时显示的默认信息。
            controlBar: {
                timeDivider: true,
                durationDisplay: true,
                remainingTimeDisplay: false,
                fullscreenToggle: true  //全屏按钮
            },
            common: "positivePlayer",
            },
        }
  },
  methods:{
      previewPdf(row) {
            let type = this.iconByType(row);
            this.fileUrl = row.url
            if (type.indexOf("doc") != -1 || type.indexOf("docx") != -1 || type.indexOf("xsl") != -1 || type.indexOf("xslx") != -1) {
                this.showDoc = true
            } else if (type.indexOf("pdf") != -1) {
                this.pdfUrl = "http://47.105.218.26:8888/group1/M00/00/00/rB-LJlzT042AbKdCAAiu_35Yccs182.pdf"
                this.showPdf = true
            } else if (type.indexOf("jpg") != -1 || type.indexOf("png") != -1 || type.indexOf("jpeg") != -1) {
                this.images = this.getUrlListByName(row.url)
                const viewer = this.$el.querySelector('.images').$viewer
                viewer.show()
            } else if (type.indexOf("avi") != -1 || type.indexOf("mp4") != -1 || type.indexOf("webm") != -1 || type.indexOf("m4v") != -1 || type.indexOf("rmvb") != -1 || type.indexOf("mpg") != -1 || type.indexOf("3gp") != -1 || type.indexOf("swf") != -1 || type.indexOf("mkv") != -1) {
                this.positivePlayerOptions.sources[0].src = "//nos.netease.com/vod163/demo.mp4"
                this.positivePlayerOptions.sources[0].type = "video/mp4"
                this.showVideo = true
            } else {
                this.$message("当前文件暂不支持预览")
            }
            // this.showPdf = true
        },
        /**
         * 通过文件后缀返回文件的图标
         */
        iconByType(row) {
            return row.fileName.substring(row.fileName.lastIndexOf(".") + 1, row.fileName.length)
        },
        closePreviewClick() {
            if (this.showDoc == true) {
                this.showDoc = false
            } else if (this.showPdf == true) {
                this.showPdf = false
            } else if (this.showVideo == true) {
                this.showVideo = false
            }
        },
    }

}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>
